From: Keir Fraser Date: Tue, 28 Jul 2009 15:43:50 +0000 (+0100) Subject: xend: make a crash dump directory per DomU X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~13545 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=00f0eadc5294a5db542dee5eef6de7f01ab54e91;p=xen.git xend: make a crash dump directory per DomU Currently, xend dumps a core file of a DomU in the directory "/var/xen/dump/", when the DomU has crashed. The patch modifies this directory to "/var/xen/dump//". It enables you to select HDD partition per DomU to dump core by using mount command. Signed-off-by: Rikiya Ayukawa --- diff --git a/tools/python/xen/xend/XendDomainInfo.py b/tools/python/xen/xend/XendDomainInfo.py index 6c0135609c..7742410a93 100644 --- a/tools/python/xen/xend/XendDomainInfo.py +++ b/tools/python/xen/xend/XendDomainInfo.py @@ -31,6 +31,7 @@ import thread import re import copy import os +import stat import traceback from types import StringTypes @@ -39,6 +40,7 @@ from xen.util import asserts, auxbin from xen.util.blkif import blkdev_uname_to_file, blkdev_uname_to_taptype import xen.util.xsm.xsm as security from xen.util import xsconstants +from xen.util import mkdir from xen.util.pci import serialise_pci_opts, pci_opts_list_to_sxp, \ pci_dict_to_bdf_str, pci_dict_to_xc_str, \ pci_convert_sxp_to_dict, pci_convert_dict_to_sxp, \ @@ -2151,9 +2153,23 @@ class XendDomainInfo: """ if not corefile: + # To prohibit directory traversal + based_name = os.path.basename(self.info['name_label']) + + coredir = "/var/xen/dump/%s" % (based_name) + if not os.path.exists(coredir): + try: + mkdir.parents(coredir, stat.S_IRWXU) + except Exception, ex: + log.error("Cannot create directory: %s" % str(ex)) + + if not os.path.isdir(coredir): + # Use former directory to dump core + coredir = '/var/xen/dump' + this_time = time.strftime("%Y-%m%d-%H%M.%S", time.localtime()) - corefile = "/var/xen/dump/%s-%s.%s.core" % (this_time, - self.info['name_label'], self.domid) + corefile = "%s/%s-%s.%s.core" % (coredir, this_time, + self.info['name_label'], self.domid) if os.path.isdir(corefile): raise XendError("Cannot dump core in a directory: %s" %